package com.proxy.proxyType;

import com.proxy.proxyClass.impl.BigStar;
import com.proxy.proxyClass.Star;

import java.lang.reflect.Proxy;

public class BigStarDynamicProxy {
    public static Star createProxy(BigStar bigStar){
        return (Star) Proxy.newProxyInstance(
                BigStarDynamicProxy.class.getClassLoader(), //参数一：用于指定用那个类加载器，去加载生成的代理类
                new Class[]{Star.class}, //参数二：指定接口，这些接口用于指定生成的代理长什么，也就是有那些方法
                //参数三：用来指定生成的代理对象要干什么事情
                (proxy, method, args) -> {
                    /*
                     * 参数一：代理的对象
                     * 参数二：要运行的方法sing
                     * 参数三：调用sing方法时，传递的实参
                     * */
                    if("sing".equals(method.getName())){
                        System.out.println("准备话筒收钱");
                    } else if ("dance".equals(method.getName())) {
                        System.out.println("准备场地，收钱");
                    }
                    return method.invoke(bigStar,args);
                }
        );
    }
}
